/*
 * @Author: guojiangang guojiangang@hikvision.com.cn
 * @Date: 2024-02-28 11:04:13
 * @LastEditors: guojiangang guojiangang@hikvision.com.cn
 * @LastEditTime: 2024-02-28 13:47:50
 * @FilePath: \cfase:\leetcode\118.杨辉三角.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/*
 * @lc app=leetcode.cn id=118 lang=javascript
 *
 * [118] 杨辉三角
 *
 * https://leetcode.cn/problems/pascals-triangle/description/
 *
 * algorithms
 * Easy (75.65%)
 * Likes:    1122
 * Dislikes: 0
 * Total Accepted:    482.2K
 * Total Submissions: 637.1K
 * Testcase Example:  '5'
 *
 * 给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
 * 
 * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
 * 
 * 
 * 
 * 
 * 
 * 示例 1:
 * 
 * 
 * 输入: numRows = 5
 * 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
 * 
 * 
 * 示例 2:
 * 
 * 
 * 输入: numRows = 1
 * 输出: [[1]]
 * 
 * 
 * 
 * 
 * 提示:
 * 
 * 
 * 1 
 * 
 * 
 */

// @lc code=start
/**
 * @param {number} numRows
 * @return {number[][]}
 */
var generate = function(numRows) {
  if (!numRows) return []
  const res = []
  for (let i = 0; i < numRows; i++) {
    const row = new Array(i + 1) // .fill(1)
    row[0] = row[i] = 1
    if (i > 1) {
      const prev = res[i - 1]
      // 结果中的前一行的数据长度大于1时，遍历前一行的数据，相邻元素两两相加
      for (let j = 1; j < i; j++) {
        row[j] = prev[j - 1] + prev[j]
      }
    }
    
    res.push(row)
  }
  return res
};
// @lc code=end

